# 指定最低的 CMake 版本要求
cmake_minimum_required(VERSION 3.10)

# 定义项目名称和使用的语言
project(CyberTimeTests LANGUAGES CXX)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 启用测试功能
enable_testing()

# 使用 FetchContent 模块来下载和配置 GoogleTest
include(FetchContent)

FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.zip
)

# 防止 GoogleTest 覆盖父项目的编译器设置（尤其是在 Windows 上）
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

# 下载并配置 GoogleTest
FetchContent_MakeAvailable(googletest)

# 创建一个静态库包含所有源文件（除了测试文件）
add_library(cyber_time_lib
    cyber_duration.cc
    cyber_time.cc
    cyber_rate.cc
)

# 指定库的包含目录
target_include_directories(cyber_time_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

# 为每个测试文件创建一个可执行文件并链接相应的库和 GoogleTest

# 1. Duration Test
add_executable(cyber_duration_test cyber_duration_test.cc)
target_link_libraries(cyber_duration_test PRIVATE cyber_time_lib gtest_main)

# 2. Time Test
add_executable(cyber_time_test cyber_time_test.cc)
target_link_libraries(cyber_time_test PRIVATE cyber_time_lib gtest_main)

# 注册测试，以便使用 ctest 运行
include(GoogleTest)
gtest_discover_tests(cyber_duration_test)
gtest_discover_tests(cyber_time_test)

#####################
# 3. Rate Example
add_executable(cyber_rate_example cyber_rate_example.cc)
target_link_libraries(cyber_rate_example PRIVATE cyber_time_lib)
